import processing.video.*;
Capture capture;

PImage base;
int[][] traceResult;
int[][] mx = {{-1,-1,-1},
              {-1,9,-1},
              {-1,-1,-1}};

/*int[][] mx = {{0,0,0},
              {0,1,0},
              {0,0,0}};*/

int c_width = 640;
int c_height = 480;
void setup(){  
  //println(Capture.list());
  size(c_width, c_height);
  capture = new Capture(this, c_width, c_height, "Webcam-101-WDM", 10);
  

} // setup

void draw(){
  PImage result;
  
  //image(result,0,0);
  
  if(capture.available()){
     capture.read();
      image(applyMx(capture,mx,3,3), 0,0);
  }
}

// ----------------------------------------------
// ----------------------------------------------


int[][] trace(PImage img){
  int result[][] = new int[img.width][img.height];
  
  
  
  return result;
} // trace


PImage applyMx(PImage img, int[][] mx, int size_x, int size_y){
  int aux;
  int aux_X;
  int aux_Y;
  PImage result;
  
  result = new PImage(img.width, img.height);
  result.loadPixels();
  img.loadPixels();
  
  // Para cada pixel
  for(int x = 0; x < img.width; x++){
    for(int y = 0; y < img.height; y++){
      aux = 0;
      
      // Aplicar la matriz
      for(int i = 0; i < size_x; i++){
        for(int j = 0; j < size_y; j++){
          aux_X = (x + i - (size_x/2) + img.width) % img.width;
          aux_Y = (y + j - (size_y/2) + img.height) % img.height;
          
          aux += green(img.pixels[aux_X + aux_Y*img.width]) * mx[i][j];
        } // for i (mx)
      } // for j (mx)
      
      if(aux < 0) aux = 0;
      else 
      if (aux > 255) aux = 255;
      result.pixels[x + y*img.width] = color(aux>255? 255 : aux);
      
    } // for y (img)
  } // for x (img)


  result.updatePixels(); 
  
  return result;
} // applyMx 



// ___---___---___---___---___---___---___---___---___---___---___---___---
// CAPTURE ___---___---___---___---___---___---___---___---___---___---___---___---
// ___---___---___---___---___---___---___---___---___---___---___---___---
void captureEvent(Capture myCapture) {
 // capture.read();
}
// ___---___---___---___---___---___---___---___---___---___---___---___---
//         ___---___---___---___---___---___---___---___---___---___---___---___---
// ___---___---___---___---___---___---___---___---___---___---___---___---
